<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>constructor 构造函数</title>
    <!-- 
        对象原型（ __proto__）和构造函数（prototype）原型对象里面都有一个属性 constructor 属性 ，
        constructor 我们称为构造函数，因为它指回构造函数本身。
        constructor 主要用于记录该对象引用于哪个构造函数，它可以让原型对象重新指向原来的构造函数。
        一般情况下，对象的方法都在构造函数的原型对象中设置。如果有多个对象的方法，我们可以给原型对象采取对象形式赋 值，但是这样就会覆盖构造函数原型对象原来的内容，这样修改后的原型对象 constructor 就不再指向当前构造函数了。 此时，我们可以在修改后的原型对象中，添加一个 constructor 指向原来的构造函数。

     -->
</head>
<body>
    
</body>
<!-- <script>
    function Star(uname,age) {
        this.uname = uname
        this.age = age
    }
    Star.prototype = {
        constructor: Star,
        sing: function(song) {
            console.log(song);
        },
        play: function(player) {
            console.log(player);
        }
    }
    var smx = new Star('smx',20)
    smx.sing('不忘')
    smx.play('王者')
    console.log(Star.prototype);
    console.log(smx.__proto__);
</script> -->

<!--  -->
<script>
    function Star(uname, age) {
        this.uname = uname;
        this.age = age;
    }
    Star.prototype.sing = function() {
        console.log('我会唱歌');
    }
    var ldh = new Star('刘德华', 18);
    // 1. 只要是对象就有__proto__ 原型, 指向原型对象
    console.log(Star.prototype);
    console.log(Star.prototype.__proto__ === Object.prototype);
    // 2.我们Star原型对象里面的__proto__原型指向的是 Object.prototype
    console.log(Object.prototype.__proto__);
    // 3. 我们Object.prototype原型对象里面的__proto__原型  指向为 null
</script>
</html>